A database is a collection of stored data that is logically related and that is accessible by one or more users or applications. A popular type of database is the relational database management system, which includes relational tables made up of rows and columns. Each row represents an occurrence of an entity defined by a table, with an entity being a person, place, or thing about which the table contains information.
To extract data from, or to update, a relational table, queries according to a standard database query language are used (e.g., Structured Query Language or SQL). One version of SQL is the SQL-92 Standard, while another version of SQL is the SQL-99 Standard (also referred to as the SQL-3 Standard).
SQL-99 defines several data types, including predefined data types and user-defined data types (UDTs). Examples of predefined data types include the number data type for representing numeric values, character string data type for representing a sequence of characters, and so forth. A characteristic of predefined SQL data types is that the inherent structure of the data type is already defined by the SQL Standard. User-defined data types, on the other hand, are not predefined; instead, user-defined data types are set by an application, a database management system, or by another standard.
With the advent of user-defined data types, more complex data objects can be stored in relational tables. Examples of complex objects include video data, image data, audio data, formatted documents, multimedia data, and so forth. Database systems that are capable of storing complex objects in relational tables are referred to as object relational database management systems (ORDBMS). In an ORDBMS, the user-defined data type enables the storage of large objects as an entry in the relational table.
In many modern database applications, large amounts of data are typically stored. For example, in some data warehousing applications, vast amounts of data are stored. Conventionally, data compression is applied to reduce data storage requirements. One compression technique applies compression on entire data blocks. A data block is a predefined block of storage for storing one or more rows of a table. The compression of entire data blocks is considered a brute force compression technique that may not be efficient in all circumstances. Another compression technique is applied on certain data values, such as null values and most frequently used values. However, this latter compression technique is available for certain data values, but may not be available for other data values stored in tables.